package cn.hinglo.common.config.error;

import cn.hinglo.common.entity.Result;
import cn.hinglo.common.util.ResultKit;
import cn.hutool.core.util.StrUtil;
import com.jfinal.config.Constants;

/**
 * @createTime: 2019/05/30
 * @author: HingLo
 * @description: 自定义的框架级别异常返回值配置与处理(400, 401, 404, 403, 500)错误等
 */
public class ErrorConstant {

    public static final int ERROR400 = 400;
    public static final int ERROR401 = 401;
    public static final int ERROR403 = 403;
    public static final int ERROR404 = 404;
    public static final int ERROR405 = 405;
    public static final int ERROR500 = 500;


    /***
     * 全局的Json错误返回配置
     * @param errorCode 错误码
     * @return 返回json对象
     */
    public static Result errorJson(Integer errorCode) {
        return errorJson(errorCode, null);
    }

    /***
     * 全局的Json错误返回配置
     * @param errorCode 错误码
     * @param errorMsg 错误消息
     * @return 返回结果
     */
    public static Result errorJson(Integer errorCode, String errorMsg) {
        return errorJson(errorCode, errorMsg, null);
    }

    /**
     * 带有自定义的错误提示信息结果返回
     *
     * @param errorCode 错误码
     * @param errorMsg  错误信息
     * @return 返回Result
     */
    public static Result errorJson(Integer errorCode, String errorMsg, Object object) {

        switch (errorCode) {
            case ERROR400:
                return ResultKit.error(errorCode, "请求参数不正确,请检查后再试", object);
            case ERROR401:
                return ResultKit.error(errorCode, "服务器拒绝你了你的请求,请联系管理员", object);
            case ERROR403:
                return ResultKit.error(errorCode, "对不起,你没有权限访问该资源", object);
            case ERROR404:
                return ResultKit.error(errorCode, "你访问的URL不正确,请检查后再试", object);
            case ERROR405:
                return ResultKit.error(errorCode, "你访问的URL的请求方式不支持", object);
            case ERROR500:
                return ResultKit.error(errorCode, "服务器错误,请稍后重试", object);
            default:
                return ResultKit.error(errorCode, StrUtil.isBlank(errorMsg) ? "请求错误,请联系管理员" : errorMsg, object);
        }
    }

    /***
     * 页面错误返回配置
     * @param constants 全局配置对象
     */
    public static void errorView(Constants constants) {
        // 例如
        // constants.setError401View("/404.html");


    }
}
